This application relates generally to client-server systems. More specifically, this application relates to control and recruitment of client peripherals from server-side software in client-server systems.
Client-server architectures are used in numerous software applications. At its most general level, a client-server architecture is characterized by a relationship between two components of the architecture: a client, which makes a service request; and a server, which fulfills the request. When such architectures are integrated as parts of networks, they provide a convenient way to interconnect functionality across different locations. In many instances, peripheral devices are also integrated into the architecture, providing a mechanism for interaction with the architecture. The interaction provided by a particular peripheral device may be in either direction, sometimes using input devices to collect information that is transmitted to a network and sometimes using output devices to provide information transmitted from a network.
There is considerable variety in the types of software applications that may exploit the client-server architecture, as well as in the types of peripherals that may be integrated into the architecture. For example, certain financial systems may use a network arrangement in which customers may interact with the network through a variety of different peripherals, either directly or with the assistance of a clerk. These peripherals may include input devices like magnetic-stripe readers that read magnetic stripes from credit or debit cards, bar-code scanners that read bar codes from product labels and other items, check readers that read information written in magnetic ink on checks, currency bill validators that check the authenticity of currency, etc. They may also include output devices like printers to generate receipts, statements, and the like, paper and coin currency dispensers that provide coins or bills, currency recyclers, etc. As another example, a client-server architecture could be used as part of an environment-monitoring system in which sensor peripherals are connected with a client device. Such sensors could be used to measure physical parameters in the environment like temperature, pressure, light level, proximity of items, and the like.
Irrespective of what type of peripherals may form part of client-server architecture, such architectures typically have a structure like that shown in FIG. 1. In this drawing, the architecture is denoted by reference number 100 and includes a server device 104 and a plurality of client devices 112. Details of one of the client devices 112-4 is shown in the drawing, with the presence of other client devices shown without explicit detail; each of these other client devices may have a similar structure to that shown for client device 112-4. Each of the server device 104 and the client devices 112 include software, identified in the drawing as server software 108 and client software 116. Peripherals 128 are connected with respective client devices 112 over communications lines 124 using communication ports that are typically serial ports, USB ports, or the like. The peripherals 128 are controlled using drivers 120 under the management of the client software 116 to enable communication over the ports with the peripherals according to the specific type of ports that are used.
Such an arrangement suffers from the disadvantage that maintenance of the architecture requires maintenance both of the server software 108 and of the client software 116 on each of the client devices 112 that may be comprised by the architecture 100. Many architectures have large numbers of client devices 112, making it cumbersome to perform upgrades of the system and to accommodate more routine maintenance of the client software 116 over the multiple devices. There is accordingly a general need in the art for architectures that mitigate some of the issues.